package com.lzj.server.constant.enums;

import lombok.AllArgsConstructor;

/**
 * @author Lzj
 * @description: 角色枚举类，定义系统中的角色及其标识
 */
@AllArgsConstructor
public enum RoleEnum {

    ADMIN("role:super_admin", "超级管理员"),
    MANAGER("role:admin", "管理员"),
    USER("role:user", "普通用户"),
    GUEST("role:guest", "游客");

    /**
     * 角色标识（一般对应数据库中的 role_code）
     */
    public final String code;

    /**
     * 角色描述（可用于展示）
     */
    public final String desc;

    public String code() {
        return code;
    }

    String desc() {
        return desc;
    }

    /**
     * 根据 code 获取枚举对象
     */
    public static RoleEnum getByCode(String code) {
        for (RoleEnum role : RoleEnum.values()) {
            if (role.code().equalsIgnoreCase(code)) {
                return role;
            }
        }
        return null;
    }

    /**
     * 判断某个 code 是否为有效角色
     */
    public static boolean isValid(String code) {
        return getByCode(code) != null;
    }
}
